package com.ang.propagation.t3;

import com.ang.propagation.t2.NewService2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

/**
 * nested
 * s1没有事物，s2自己创建一个事物；s1有事务，s2回创建一个嵌套事务；
 *      1.s1回滚，会影响s2回滚
 *      2.s2回滚，不会影响s1回滚（除非异常上抛到s1）
 */
@Component
public class NestedService1 {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private NestedService2 service2;

    @Transactional()
    public void trans() {
        jdbcTemplate.update("update t_user set age = ? where id = ?", 1, 1);
        //捕获了异常，不会影响调用方事物的回滚
        try {
            service2.update();
        }catch (Exception e){
            e.printStackTrace();
        }
//        int i = 1 / 0;
    }
}
